package com.hb.repository.impl;

import com.hb.Order;
import com.hb.repository.OrderOperations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.List;

/**
 * 将这些关联起来的关键点在于实现类的名称为 OrderRepositoryImpl。这个名字前半部分与 OrderRepository 相同，只是添加了 “Impl” 后缀。当 Spring Data MongoDB
 * 生成 Repository 实现时，它会查找这个类并将其混合到自动生成的实现中。如果你不喜欢 “Impl” 后缀的话，那么可以配置 Spring Data MongoDB，让其按照名字查找具备不同后缀的类。
 * 我们需要做的就是设置 @EnableMongoRepositories 的属性 “repositoryImplementationPostfix”（在 Spring 配置类中）。如果使用 XML 配置的话，我们可以设置
 * <mongo:repositories> 的 repository-impl-postfix 属性。
 */
public class OrderRepositoryImpl implements OrderOperations {
    // 注入 MongoOperations
    @Autowired
    private MongoOperations mongoOperations;

    @Override
    public List<Order> findOrdersByType(String t) {
        String type = t.equals("NET") ? "WEB" : t;
        // 创建查询
        Criteria where = Criteria.where("type").is(t);
        Query query = Query.query(where);

        // 执行查询
        return mongoOperations.find(query, Order.class);
    }
}
